package common.mq.basic.service;

import common.mq.po.Message;
import common.mq.po.Queue;

public interface QueueManager {
	
	/**
	 * 从队列中取得msgId对应的消息，并将该消息从这个区域删除
	 * @param q
	 * @param msgId
	 * @return
	 */
	public Message popOneM(Queue q , String msgId);
	
	/**
	 * 将消息推送到某区域
	 * @param m
	 * @param area
	 * @throws Exception 
	 */
	public void push(Message m ,Queue q ) throws Exception;
	
	/**
	 * 检查消息在队列中的时序关系
	 * @param q
	 * @return false 表示不允许该时序消息发送 true 表示允许发送该时序消息
	 */
	public boolean checkSeqRelation(Queue q,Message m);
	
	/**
	 * 预计在sendTime秒后将qId队列中msgId消息推送出去
	 * @param msgId
	 * @param qId
	 * @param sendTime
	 */
	public void push2Send(String msgId , int qId , int sendTime);
	
}
